unit PerfilFuncRecordFr;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, DBCtrls, ActnList, Buttons, MainRecordFr, Grids,
  ExtCtrls;

type

  { TPerfilFuncRecordFrame }

  TPerfilFuncRecordFrame = class(TMainRecordFrame)
    FuncionalidadeCheckGroup: TCheckGroup;
    PerfilDBRadio: TDBRadioGroup;
    GroupBox1: TGroupBox;
    GroupBox3: TGroupBox;
    procedure FuncionalidadeCheckGroupItemClick(Sender: TObject; Index: integer);
    procedure InserirActionExecute(Sender: TObject);
    procedure PerfilDBRadioClick(Sender: TObject);
    procedure SalvarActionExecute(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

implementation

uses
  PerfilFuncDM;


{ TPerfilFuncRecordFrame }


procedure TPerfilFuncRecordFrame.InserirActionExecute(Sender: TObject);
var
  I, J: integer;
begin
  I := 1;
  J := 1;
  PerfilFuncData.PerfilZQuery.Open();
  PerfilDBRadio.Items.Clear();
  FuncionalidadeCheckGroup.Items.Clear();
  while I <= PerfilFuncData.PerfilZQuery.RecordCount do begin
    PerfilFuncData.PerfilZQuery.RecNo := I;
    PerfilDBRadio.Items.Add(PerfilFuncData.PerfilZQuery.Fields[1].AsString);
    PerfilDBRadio.Values.Add(PerfilFuncData.PerfilZQuery.Fields[0].AsString);
    I := I + 1;
  end;
  while J <= PerfilFuncData.FuncZQuery.RecordCount do begin
    PerfilFuncData.FuncZQuery.RecNo := J;
    FuncionalidadeCheckGroup.Items.Add(PerfilFuncData.FuncZQuery.Fields[2].AsString);
    J := J + 1;
  end;
  PerfilFuncData.PerfilFuncZQuery.Insert();
  ControlaBotoes();
end;

procedure TPerfilFuncRecordFrame.FuncionalidadeCheckGroupItemClick(Sender: TObject;
  Index: integer);
begin
  if PerfilFuncData.PerfilFuncZQuery.FieldByName('id_perfil').AsString <> '' then begin
    if FuncionalidadeCheckGroup.Checked[Index] = True then begin
      PerfilFuncData.AlteraFuncionalidadePerfil(
        FuncionalidadeCheckGroup.Items[Index], 'E');
    end else begin
      PerfilFuncData.AlteraFuncionalidadePerfil(
        FuncionalidadeCheckGroup.Items[Index], 'R');
    end;
  end;
end;


procedure TPerfilFuncRecordFrame.PerfilDBRadioClick(Sender: TObject);
var
  I, ln, r: integer;
begin
  PerfilFuncData.PerfilFuncZQuery.Edit();
  for r := 0 to FuncionalidadeCheckGroup.Rows do begin
    FuncionalidadeCheckGroup.Checked[r] := False;
  end;
  for I := 0 to PerfilDBRadio.Rows do begin
    if PerfilDBRadio.ItemIndex = I then begin
      PerfilFuncData.PerfilFuncZQuery.FieldByName('id_perfil').AsString :=
        PerfilDBRadio.Values[I];
      PerfilFuncData.BuscaFuncionalidadePerfil(PerfilDBRadio.Values[I]);
      for ln := 1 to PerfilFuncData.AuxiliarZQuery.RecordCount do begin
        PerfilFuncData.AuxiliarZQuery.RecNo := ln;
        for r := 0 to FuncionalidadeCheckGroup.Rows do begin
          if PerfilFuncData.AuxiliarZQuery.FieldByName(
            'desc_funcionalidades').AsString = FuncionalidadeCheckGroup.Items[r] then
          begin
            FuncionalidadeCheckGroup.Checked[r] := True;
          end;
        end;
      end;
    end;
  end;
end;

procedure TPerfilFuncRecordFrame.SalvarActionExecute(Sender: TObject);
begin
  PerfilFuncData.Salvar();
  ControlaBotoes();
end;


initialization
  {$I perfilfuncrecordfr.lrs}

end.
